package com.zy.explore.license.infrastructure.util.mock;

import com.github.javafaker.Faker;

import java.lang.annotation.*;

/**
 * description 通过指定 {@link Faker} 调用方法，指定属性模拟数据生成策略
 * 同时支持中文和英文模拟数据
 * 具体的调用方法请查看 {@link Faker}
 *
 * @author 🇨🇳中国印🇨🇳
 * @date 2022年04月17日 01:33:12
 * @since 1.0.0
 * @see Faker
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MockProperty {
    /**
     * 注意：
     * 格式要求 [category.value]
     * 其中 category 是 Faker 中方法名
     * value 是 category 中方法名
     * <p>
     * 不支持带有参数的方法
     * <p>
     * faker 方法名，如
     * name.username
     * 实际会调用 faker.name().name()
     * @return 字符串
     */
    String faker() default "";

    /**
     * cn 中文
     * en 英文
     * @return 字符串
     */
    String lang() default "cn";

    /**
     * 指定该字段后将直接返回该字段的植
     * @return 字符串
     */
    String value() default "";
}
